package com.saber.king.service;

import com.saber.king.entity.Company;
import com.saber.king.vo.req.CompanyAddReqVO;
import com.saber.king.vo.req.CompanyPageReqVO;
import com.saber.king.vo.req.CompanyUpdateReqVO;
import com.saber.king.vo.resp.PageRespVO;

import java.util.List;

/**
 * @author Saber污妖王
 * TODO: 公司相关业务层接口
 * @version 0.0.1
 * @editor Saber污妖王
 * @project customer-circulation
 * @date 2020/6/22
 * @package com.saber.king.service
 */
public interface CompanyService {
    /**
     * 查询所有公司
     *
     * @return 公司集合
     */
    List<Company> selectAll();

    /**
     * 公司数据分页查询的接口
     *
     * @param vo 公司分页数据的VO
     * @return 返回分页数据封装类
     */
    PageRespVO<Company> pageInfo(CompanyPageReqVO vo);

    /**
     * 新增公司
     *
     * @param vo     新增公司请求的数据VO
     * @param userId 用户ID
     * @return 新增的公司信息
     */
    Company addCompany(CompanyAddReqVO vo, String userId);

    /**
     * 修改公司
     *
     * @param vo     修改公司请求的数据VO
     * @param userId 用户ID
     */
    void updateCompany(CompanyUpdateReqVO vo, String userId);

    /**
     * 根据ID（批量）删除公司
     *
     * @param ids         公司ID集合
     * @param operationId 操作员ID
     */
    void batchDeleteCompany(List<String> ids, String operationId);

    /**
     * 根据ID查询公司信息
     *
     * @param id ID
     * @return 公司实体
     */
    Company getCompanyById(String id);
}
